import { klona } from "klona";
import { isEmpty, startCase } from "lodash";
import { isDynamicValue } from "utils/DynamicBindingUtils";
import {
  ARRAY_ITEM_KEY,
  DataType,
  FieldThemeStylesheet,
  FieldType,
  ROOT_SCHEMA_KEY,
  SchemaItem,
} from "./constants";

export const schemaItemStyles = {
  accentColor:
    "{{((sourceData, formData, fieldState) => (appsmith.theme.colors.primaryColor))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
  borderRadius:
    "{{((sourceData, formData, fieldState) => (appsmith.theme.borderRadius.appBorderRadius))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
  boxShadow: "none",
};

export const schemaItemFactory = (item: any): SchemaItem => {
  return {
    isDisabled: false,
    isRequired: false,
    labelTextSize: "0.875rem",
    label: startCase(item.identifier),
    isVisible: true,
    children: {},
    dataType: DataType.STRING,
    defaultValue: `{{((sourceData, formData, fieldState) => (sourceData.${item.identifier}))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}`,
    fieldType: FieldType.TEXT_INPUT,
    sourceData: "Test name",
    isCustomField: false,
    accessor: item.identifier || "",
    identifier: item.identifier || "",
    originalIdentifier: item.identifier || "",
    position: 0,
    ...item,
  };
};

export const replaceBindingWithValue = (schemaItem: SchemaItem) => {
  if (isEmpty(schemaItem)) return {} as SchemaItem;

  const updatedSchemaItem = klona(schemaItem);

  Object.keys(updatedSchemaItem).forEach((k) => {
    const key = k as keyof SchemaItem;

    if (key === "children") {
      const schema = schemaItem[key];
      Object.keys(schema).forEach((itemKey) => {
        updatedSchemaItem.children[itemKey] = replaceBindingWithValue(
          schemaItem.children[itemKey],
        );
      });
    }

    if (isDynamicValue(schemaItem[key])) {
      updatedSchemaItem[key] = "test" as never;
    }
  });

  return updatedSchemaItem;
};

const initialDataset = {
  dataSource: {
    name: "Test name",
    age: 20,
    dob: "10/12/2021",
    boolean: true,
    hobbies: ["travelling", "skating", "off-roading"],
    "%%": "%",
    हिन्दि: "हिन्दि",
    education: [
      {
        college: "String field ",
        number: 1,
        graduationDate: "10/12/2021",
        boolean: true,
      },
    ],
    address: {
      Line1: "String field ",
      city: "1",
    },
  },

  schemaOutput: {
    __root_schema__: {
      isDisabled: false,
      isRequired: false,
      labelTextSize: "0.875rem",
      label: "",
      isVisible: true,
      children: {
        name: {
          isDisabled: false,
          isRequired: false,
          labelTextSize: "0.875rem",
          label: "Name",
          isVisible: true,
          isSpellCheck: false,
          children: {},
          dataType: DataType.STRING,
          defaultValue:
            "{{((sourceData, formData, fieldState) => (sourceData.name))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
          fieldType: FieldType.TEXT_INPUT,
          iconAlign: "left",
          sourceData: "Test name",
          isCustomField: false,
          accessor: "name",
          identifier: "name",
          originalIdentifier: "name",
          position: 0,
          accentColor:
            "{{((sourceData, formData, fieldState) => (appsmith.theme.colors.primaryColor))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
          borderRadius:
            "{{((sourceData, formData, fieldState) => (appsmith.theme.borderRadius.appBorderRadius))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
          boxShadow: "none",
        },
        age: {
          isDisabled: false,
          isRequired: false,
          labelTextSize: "0.875rem",
          label: "Age",
          isVisible: true,
          isSpellCheck: false,
          children: {},
          dataType: DataType.NUMBER,
          defaultValue:
            "{{((sourceData, formData, fieldState) => (sourceData.age))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
          fieldType: FieldType.NUMBER_INPUT,
          iconAlign: "left",
          sourceData: 20,
          isCustomField: false,
          accessor: "age",
          identifier: "age",
          originalIdentifier: "age",
          position: 1,
          accentColor:
            "{{((sourceData, formData, fieldState) => (appsmith.theme.colors.primaryColor))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
          borderRadius:
            "{{((sourceData, formData, fieldState) => (appsmith.theme.borderRadius.appBorderRadius))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
          boxShadow: "none",
        },
        dob: {
          closeOnSelection: false,
          dateFormat: "MM/DD/YYYY",
          isDisabled: false,
          isRequired: false,
          labelTextSize: "0.875rem",
          label: "Dob",
          maxDate: "2121-12-31T18:29:00.000Z",
          minDate: "1920-12-31T18:30:00.000Z",
          shortcuts: false,
          isVisible: true,
          convertToISO: false,
          children: {},
          dataType: DataType.STRING,
          defaultValue:
            '{{((sourceData, formData, fieldState) => (moment(sourceData.dob, "MM/DD/YYYY").format("YYYY-MM-DDTHH:mm:ss.sssZ")))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}',
          fieldType: FieldType.DATEPICKER,
          timePrecision: "minute",
          sourceData: "10/12/2021",
          isCustomField: false,
          accessor: "dob",
          identifier: "dob",
          originalIdentifier: "dob",
          position: 2,
          accentColor:
            "{{((sourceData, formData, fieldState) => (appsmith.theme.colors.primaryColor))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
          borderRadius:
            "{{((sourceData, formData, fieldState) => (appsmith.theme.borderRadius.appBorderRadius))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
          boxShadow: "none",
        },
        boolean: {
          alignWidget: "LEFT",
          isDisabled: false,
          isRequired: false,
          isVisible: true,
          labelTextSize: "0.875rem",
          label: "Boolean",
          children: {},
          dataType: DataType.BOOLEAN,
          defaultValue:
            "{{((sourceData, formData, fieldState) => (sourceData.boolean))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
          fieldType: FieldType.SWITCH,
          sourceData: true,
          isCustomField: false,
          accessor: "boolean",
          identifier: "boolean",
          originalIdentifier: "boolean",
          position: 3,
          backgroundColor:
            "{{((sourceData, formData, fieldState) => (appsmith.theme.colors.primaryColor))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
          boxShadow: "none",
        },
        hobbies: {
          isDisabled: false,
          isRequired: false,
          labelTextSize: "0.875rem",
          label: "Hobbies",
          isVisible: true,
          serverSideFiltering: false,
          options: [
            { label: "Blue", value: "BLUE" },
            { label: "Green", value: "GREEN" },
            { label: "Red", value: "RED" },
          ],
          children: {},
          dataType: DataType.ARRAY,
          defaultValue: `{{((sourceData, formData, fieldState) => (sourceData.hobbies))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}`,
          fieldType: FieldType.MULTISELECT,
          isFilterable: false,
          sourceData: ["travelling", "skating", "off-roading"],
          isCustomField: false,
          accessor: "hobbies",
          identifier: "hobbies",
          originalIdentifier: "hobbies",
          position: 4,
          accentColor:
            "{{((sourceData, formData, fieldState) => (appsmith.theme.colors.primaryColor))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
          borderRadius:
            "{{((sourceData, formData, fieldState) => (appsmith.theme.borderRadius.appBorderRadius))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
          boxShadow: "none",
        },
        __: {
          isDisabled: false,
          isRequired: false,
          labelTextSize: "0.875rem",
          label: "%%",
          isVisible: true,
          isSpellCheck: false,
          children: {},
          dataType: DataType.STRING,
          defaultValue:
            '{{((sourceData, formData, fieldState) => (sourceData["%%"]))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}',
          fieldType: FieldType.TEXT_INPUT,
          iconAlign: "left",
          sourceData: "%",
          isCustomField: false,
          accessor: "%%",
          identifier: "__",
          originalIdentifier: "%%",
          position: 5,
          accentColor:
            "{{((sourceData, formData, fieldState) => (appsmith.theme.colors.primaryColor))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
          borderRadius:
            "{{((sourceData, formData, fieldState) => (appsmith.theme.borderRadius.appBorderRadius))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
          boxShadow: "none",
        },
        xn__j2bd4cyac6f: {
          isDisabled: false,
          isRequired: false,
          labelTextSize: "0.875rem",
          label: "हिन्दि",
          isVisible: true,
          isSpellCheck: false,
          children: {},
          dataType: DataType.STRING,
          defaultValue:
            '{{((sourceData, formData, fieldState) => (sourceData["हिन्दि"]))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}',
          fieldType: FieldType.TEXT_INPUT,
          iconAlign: "left",
          sourceData: "हिन्दि",
          isCustomField: false,
          accessor: "हिन्दि",
          identifier: "xn__j2bd4cyac6f",
          originalIdentifier: "हिन्दि",
          position: 6,
          accentColor:
            "{{((sourceData, formData, fieldState) => (appsmith.theme.colors.primaryColor))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
          borderRadius:
            "{{((sourceData, formData, fieldState) => (appsmith.theme.borderRadius.appBorderRadius))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
          boxShadow: "none",
        },
        education: {
          backgroundColor: "#FAFAFA",
          isCollapsible: true,
          isDisabled: false,
          isRequired: false,
          isVisible: true,
          labelTextSize: "0.875rem",
          label: "Education",
          children: {
            __array_item__: {
              isDisabled: false,
              isRequired: false,
              labelTextSize: "0.875rem",
              label: "Array Item",
              isVisible: true,
              children: {
                college: {
                  isDisabled: false,
                  isRequired: false,
                  labelTextSize: "0.875rem",
                  label: "College",
                  isVisible: true,
                  isSpellCheck: false,
                  children: {},
                  dataType: DataType.STRING,
                  defaultValue: undefined,
                  fieldType: FieldType.TEXT_INPUT,
                  iconAlign: "left",
                  sourceData: "String field ",
                  isCustomField: false,
                  accessor: "college",
                  identifier: "college",
                  originalIdentifier: "college",
                  position: 0,
                  accentColor:
                    "{{((sourceData, formData, fieldState) => (appsmith.theme.colors.primaryColor))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
                  borderRadius:
                    "{{((sourceData, formData, fieldState) => (appsmith.theme.borderRadius.appBorderRadius))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
                  boxShadow: "none",
                },
                number: {
                  isDisabled: false,
                  isRequired: false,
                  labelTextSize: "0.875rem",
                  label: "Number",
                  isVisible: true,
                  isSpellCheck: false,
                  children: {},
                  dataType: DataType.NUMBER,
                  defaultValue: undefined,
                  fieldType: FieldType.NUMBER_INPUT,
                  iconAlign: "left",
                  sourceData: 1,
                  isCustomField: false,
                  accessor: "number",
                  identifier: "number",
                  originalIdentifier: "number",
                  position: 1,
                  accentColor:
                    "{{((sourceData, formData, fieldState) => (appsmith.theme.colors.primaryColor))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
                  borderRadius:
                    "{{((sourceData, formData, fieldState) => (appsmith.theme.borderRadius.appBorderRadius))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
                  boxShadow: "none",
                },
                graduationDate: {
                  closeOnSelection: false,
                  dateFormat: "MM/DD/YYYY",
                  isDisabled: false,
                  isRequired: false,
                  labelTextSize: "0.875rem",
                  label: "Graduation Date",
                  maxDate: "2121-12-31T18:29:00.000Z",
                  minDate: "1920-12-31T18:30:00.000Z",
                  shortcuts: false,
                  isVisible: true,
                  children: {},
                  dataType: DataType.STRING,
                  defaultValue: undefined,
                  fieldType: FieldType.DATEPICKER,
                  timePrecision: "minute",
                  convertToISO: false,
                  sourceData: "10/12/2021",
                  isCustomField: false,
                  accessor: "graduationDate",
                  identifier: "graduationDate",
                  originalIdentifier: "graduationDate",
                  position: 2,
                  accentColor:
                    "{{((sourceData, formData, fieldState) => (appsmith.theme.colors.primaryColor))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
                  borderRadius:
                    "{{((sourceData, formData, fieldState) => (appsmith.theme.borderRadius.appBorderRadius))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
                  boxShadow: "none",
                },
                boolean: {
                  alignWidget: "LEFT",
                  isDisabled: false,
                  isRequired: false,
                  isVisible: true,
                  labelTextSize: "0.875rem",
                  label: "Boolean",
                  children: {},
                  dataType: DataType.BOOLEAN,
                  defaultValue: undefined,
                  fieldType: FieldType.SWITCH,
                  sourceData: true,
                  isCustomField: false,
                  accessor: "boolean",
                  identifier: "boolean",
                  originalIdentifier: "boolean",
                  position: 3,
                  backgroundColor:
                    "{{((sourceData, formData, fieldState) => (appsmith.theme.colors.primaryColor))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
                  boxShadow: "none",
                },
              },
              dataType: DataType.OBJECT,
              defaultValue: undefined,
              fieldType: FieldType.OBJECT,
              sourceData: {
                college: "String field ",
                number: 1,
                graduationDate: "10/12/2021",
                boolean: true,
              },
              isCustomField: false,
              accessor: ARRAY_ITEM_KEY,
              identifier: ARRAY_ITEM_KEY,
              originalIdentifier: ARRAY_ITEM_KEY,
              position: -1,
            },
          },
          dataType: DataType.ARRAY,
          defaultValue:
            "{{((sourceData, formData, fieldState) => (sourceData.education))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
          fieldType: FieldType.ARRAY,
          sourceData: [
            {
              boolean: true,
              college: "String field ",
              graduationDate: "10/12/2021",
              number: 1,
            },
          ],
          isCustomField: false,
          accessor: "education",
          identifier: "education",
          originalIdentifier: "education",
          position: 7,
        },
        address: {
          isDisabled: false,
          isRequired: false,
          labelTextSize: "0.875rem",
          label: "Address",
          isVisible: true,
          children: {
            Line1: {
              isDisabled: false,
              isRequired: false,
              labelTextSize: "0.875rem",
              label: "Line 1",
              isVisible: true,
              isSpellCheck: false,
              children: {},
              dataType: DataType.STRING,
              defaultValue:
                "{{((sourceData, formData, fieldState) => (sourceData.address.Line1))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
              fieldType: FieldType.TEXT_INPUT,
              iconAlign: "left",
              sourceData: "String field ",
              isCustomField: false,
              accessor: "Line1",
              identifier: "Line1",
              originalIdentifier: "Line1",
              position: 0,
              accentColor:
                "{{((sourceData, formData, fieldState) => (appsmith.theme.colors.primaryColor))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
              borderRadius:
                "{{((sourceData, formData, fieldState) => (appsmith.theme.borderRadius.appBorderRadius))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
              boxShadow: "none",
            },
            city: {
              isSpellCheck: false,
              isDisabled: false,
              isRequired: false,
              labelTextSize: "0.875rem",
              label: "City",
              isVisible: true,
              children: {},
              dataType: DataType.STRING,
              defaultValue:
                "{{((sourceData, formData, fieldState) => (sourceData.address.city))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
              fieldType: FieldType.TEXT_INPUT,
              iconAlign: "left",
              sourceData: "1",
              isCustomField: false,
              accessor: "city",
              identifier: "city",
              originalIdentifier: "city",
              position: 1,
              accentColor:
                "{{((sourceData, formData, fieldState) => (appsmith.theme.colors.primaryColor))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
              borderRadius:
                "{{((sourceData, formData, fieldState) => (appsmith.theme.borderRadius.appBorderRadius))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
              boxShadow: "none",
            },
          },
          dataType: DataType.OBJECT,
          defaultValue:
            "{{((sourceData, formData, fieldState) => (sourceData.address))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
          fieldType: FieldType.OBJECT,
          sourceData: { Line1: "String field ", city: "1" },
          isCustomField: false,
          accessor: "address",
          identifier: "address",
          originalIdentifier: "address",
          position: 8,
        },
      },
      dataType: DataType.OBJECT,
      defaultValue:
        "{{((sourceData, formData, fieldState) => (sourceData))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
      fieldType: FieldType.OBJECT,
      sourceData: {
        name: "Test name",
        age: 20,
        dob: "10/12/2021",
        boolean: true,
        hobbies: ["travelling", "skating", "off-roading"],
        "%%": "%",
        education: [
          {
            college: "String field ",
            number: 1,
            graduationDate: "10/12/2021",
            boolean: true,
          },
        ],
        address: {
          Line1: "String field ",
          city: "1",
        },
        हिन्दि: "हिन्दि",
      },
      isCustomField: false,
      accessor: ROOT_SCHEMA_KEY,
      identifier: ROOT_SCHEMA_KEY,
      originalIdentifier: ROOT_SCHEMA_KEY,
      position: -1,
    },
  },
};

const withRemovedKeyFromInitialDataset = {
  dataSource: {
    name: "Test name",
    age: 20,
    dob: "10/12/2021",
    hobbies: ["travelling", "skating", "off-roading"],
    हिन्दि: "हिन्दि",
    education: [
      {
        college: "String field ",
        number: 1,
        graduationDate: "10/12/2021",
        boolean: true,
      },
    ],
    address: {
      Line1: "String field ",
      city: "1",
    },
  },

  schemaOutput: {
    __root_schema__: {
      isDisabled: false,
      isRequired: false,
      labelTextSize: "0.875rem",
      label: "",
      isVisible: true,
      children: {
        name: {
          isDisabled: false,
          isRequired: false,
          labelTextSize: "0.875rem",
          label: "Name",
          isVisible: true,
          isSpellCheck: false,
          children: {},
          dataType: DataType.STRING,
          defaultValue:
            "{{((sourceData, formData, fieldState) => (sourceData.name))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
          fieldType: FieldType.TEXT_INPUT,
          iconAlign: "left",
          sourceData: "Test name",
          isCustomField: false,
          accessor: "name",
          identifier: "name",
          originalIdentifier: "name",
          position: 0,
          accentColor:
            "{{((sourceData, formData, fieldState) => (appsmith.theme.colors.primaryColor))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
          borderRadius:
            "{{((sourceData, formData, fieldState) => (appsmith.theme.borderRadius.appBorderRadius))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
          boxShadow: "none",
        },
        age: {
          isDisabled: false,
          isRequired: false,
          labelTextSize: "0.875rem",
          label: "Age",
          isVisible: true,
          isSpellCheck: false,
          children: {},
          dataType: DataType.NUMBER,
          defaultValue:
            "{{((sourceData, formData, fieldState) => (sourceData.age))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
          fieldType: FieldType.NUMBER_INPUT,
          iconAlign: "left",
          sourceData: 20,
          isCustomField: false,
          accessor: "age",
          identifier: "age",
          originalIdentifier: "age",
          position: 1,
          accentColor:
            "{{((sourceData, formData, fieldState) => (appsmith.theme.colors.primaryColor))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
          borderRadius:
            "{{((sourceData, formData, fieldState) => (appsmith.theme.borderRadius.appBorderRadius))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
          boxShadow: "none",
        },
        dob: {
          closeOnSelection: false,
          dateFormat: "MM/DD/YYYY",
          isDisabled: false,
          isRequired: false,
          labelTextSize: "0.875rem",
          label: "Dob",
          maxDate: "2121-12-31T18:29:00.000Z",
          minDate: "1920-12-31T18:30:00.000Z",
          shortcuts: false,
          isVisible: true,
          convertToISO: false,
          children: {},
          dataType: DataType.STRING,
          defaultValue:
            '{{((sourceData, formData, fieldState) => (moment(sourceData.dob, "MM/DD/YYYY").format("YYYY-MM-DDTHH:mm:ss.sssZ")))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}',
          fieldType: FieldType.DATEPICKER,
          timePrecision: "minute",
          sourceData: "10/12/2021",
          isCustomField: false,
          accessor: "dob",
          identifier: "dob",
          originalIdentifier: "dob",
          position: 2,
          accentColor:
            "{{((sourceData, formData, fieldState) => (appsmith.theme.colors.primaryColor))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
          borderRadius:
            "{{((sourceData, formData, fieldState) => (appsmith.theme.borderRadius.appBorderRadius))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
          boxShadow: "none",
        },
        hobbies: {
          isDisabled: false,
          isRequired: false,
          labelTextSize: "0.875rem",
          label: "Hobbies",
          isVisible: true,
          serverSideFiltering: false,
          options: [
            { label: "Blue", value: "BLUE" },
            { label: "Green", value: "GREEN" },
            { label: "Red", value: "RED" },
          ],
          children: {},
          dataType: DataType.ARRAY,
          defaultValue:
            "{{((sourceData, formData, fieldState) => (sourceData.hobbies))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
          fieldType: FieldType.MULTISELECT,
          isFilterable: false,
          sourceData: ["travelling", "skating", "off-roading"],
          isCustomField: false,
          accessor: "hobbies",
          identifier: "hobbies",
          originalIdentifier: "hobbies",
          position: 4,
          accentColor:
            "{{((sourceData, formData, fieldState) => (appsmith.theme.colors.primaryColor))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
          borderRadius:
            "{{((sourceData, formData, fieldState) => (appsmith.theme.borderRadius.appBorderRadius))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
          boxShadow: "none",
        },
        xn__j2bd4cyac6f: {
          isDisabled: false,
          isRequired: false,
          labelTextSize: "0.875rem",
          label: "हिन्दि",
          isVisible: true,
          isSpellCheck: false,
          children: {},
          dataType: DataType.STRING,
          defaultValue:
            '{{((sourceData, formData, fieldState) => (sourceData["हिन्दि"]))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}',
          fieldType: FieldType.TEXT_INPUT,
          iconAlign: "left",
          sourceData: "हिन्दि",
          isCustomField: false,
          accessor: "हिन्दि",
          identifier: "xn__j2bd4cyac6f",
          originalIdentifier: "हिन्दि",
          position: 6,
          accentColor:
            "{{((sourceData, formData, fieldState) => (appsmith.theme.colors.primaryColor))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
          borderRadius:
            "{{((sourceData, formData, fieldState) => (appsmith.theme.borderRadius.appBorderRadius))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
          boxShadow: "none",
        },
        education: {
          backgroundColor: "#FAFAFA",
          isCollapsible: true,
          isDisabled: false,
          isRequired: false,
          isVisible: true,
          labelTextSize: "0.875rem",
          label: "Education",
          children: {
            __array_item__: {
              isDisabled: false,
              isRequired: false,
              labelTextSize: "0.875rem",
              label: "Array Item",
              isVisible: true,
              children: {
                college: {
                  isDisabled: false,
                  isRequired: false,
                  labelTextSize: "0.875rem",
                  label: "College",
                  isVisible: true,
                  isSpellCheck: false,
                  children: {},
                  dataType: DataType.STRING,
                  defaultValue: undefined,
                  fieldType: FieldType.TEXT_INPUT,
                  iconAlign: "left",
                  sourceData: "String field ",
                  isCustomField: false,
                  accessor: "college",
                  identifier: "college",
                  originalIdentifier: "college",
                  position: 0,
                  accentColor:
                    "{{((sourceData, formData, fieldState) => (appsmith.theme.colors.primaryColor))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
                  borderRadius:
                    "{{((sourceData, formData, fieldState) => (appsmith.theme.borderRadius.appBorderRadius))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
                  boxShadow: "none",
                },
                number: {
                  isDisabled: false,
                  isRequired: false,
                  labelTextSize: "0.875rem",
                  label: "Number",
                  isVisible: true,
                  isSpellCheck: false,
                  children: {},
                  dataType: DataType.NUMBER,
                  defaultValue: undefined,
                  fieldType: FieldType.NUMBER_INPUT,
                  iconAlign: "left",
                  sourceData: 1,
                  isCustomField: false,
                  accessor: "number",
                  identifier: "number",
                  originalIdentifier: "number",
                  position: 1,
                  accentColor:
                    "{{((sourceData, formData, fieldState) => (appsmith.theme.colors.primaryColor))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
                  borderRadius:
                    "{{((sourceData, formData, fieldState) => (appsmith.theme.borderRadius.appBorderRadius))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
                  boxShadow: "none",
                },
                graduationDate: {
                  closeOnSelection: false,
                  dateFormat: "MM/DD/YYYY",
                  isDisabled: false,
                  isRequired: false,
                  labelTextSize: "0.875rem",
                  label: "Graduation Date",
                  maxDate: "2121-12-31T18:29:00.000Z",
                  minDate: "1920-12-31T18:30:00.000Z",
                  shortcuts: false,
                  isVisible: true,
                  convertToISO: false,
                  children: {},
                  dataType: DataType.STRING,
                  defaultValue: undefined,
                  fieldType: FieldType.DATEPICKER,
                  timePrecision: "minute",
                  sourceData: "10/12/2021",
                  isCustomField: false,
                  accessor: "graduationDate",
                  identifier: "graduationDate",
                  originalIdentifier: "graduationDate",
                  position: 2,
                  accentColor:
                    "{{((sourceData, formData, fieldState) => (appsmith.theme.colors.primaryColor))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
                  borderRadius:
                    "{{((sourceData, formData, fieldState) => (appsmith.theme.borderRadius.appBorderRadius))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
                  boxShadow: "none",
                },
                boolean: {
                  alignWidget: "LEFT",
                  isDisabled: false,
                  isRequired: false,
                  isVisible: true,
                  labelTextSize: "0.875rem",
                  label: "Boolean",
                  children: {},
                  dataType: DataType.BOOLEAN,
                  defaultValue: undefined,
                  fieldType: FieldType.SWITCH,
                  sourceData: true,
                  isCustomField: false,
                  accessor: "boolean",
                  identifier: "boolean",
                  originalIdentifier: "boolean",
                  position: 3,
                  backgroundColor:
                    "{{((sourceData, formData, fieldState) => (appsmith.theme.colors.primaryColor))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
                  boxShadow: "none",
                },
              },
              dataType: DataType.OBJECT,
              defaultValue: undefined,
              fieldType: FieldType.OBJECT,
              sourceData: {
                college: "String field ",
                number: 1,
                graduationDate: "10/12/2021",
                boolean: true,
              },
              isCustomField: false,
              accessor: ARRAY_ITEM_KEY,
              identifier: ARRAY_ITEM_KEY,
              originalIdentifier: ARRAY_ITEM_KEY,
              position: -1,
            },
          },
          dataType: DataType.ARRAY,
          defaultValue:
            "{{((sourceData, formData, fieldState) => (sourceData.education))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
          fieldType: FieldType.ARRAY,
          sourceData: [
            {
              boolean: true,
              college: "String field ",
              graduationDate: "10/12/2021",
              number: 1,
            },
          ],
          isCustomField: false,
          accessor: "education",
          identifier: "education",
          originalIdentifier: "education",
          position: 7,
        },
        address: {
          isDisabled: false,
          isRequired: false,
          labelTextSize: "0.875rem",
          label: "Address",
          isVisible: true,
          children: {
            Line1: {
              isDisabled: false,
              isRequired: false,
              labelTextSize: "0.875rem",
              label: "Line 1",
              isVisible: true,
              isSpellCheck: false,
              children: {},
              dataType: DataType.STRING,
              defaultValue:
                "{{((sourceData, formData, fieldState) => (sourceData.address.Line1))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
              fieldType: FieldType.TEXT_INPUT,
              iconAlign: "left",
              sourceData: "String field ",
              isCustomField: false,
              accessor: "Line1",
              identifier: "Line1",
              originalIdentifier: "Line1",
              position: 0,
              accentColor:
                "{{((sourceData, formData, fieldState) => (appsmith.theme.colors.primaryColor))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
              borderRadius:
                "{{((sourceData, formData, fieldState) => (appsmith.theme.borderRadius.appBorderRadius))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
              boxShadow: "none",
            },
            city: {
              isDisabled: false,
              isRequired: false,
              labelTextSize: "0.875rem",
              label: "City",
              isSpellCheck: false,
              isVisible: true,
              children: {},
              dataType: DataType.STRING,
              defaultValue:
                "{{((sourceData, formData, fieldState) => (sourceData.address.city))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
              fieldType: FieldType.TEXT_INPUT,
              iconAlign: "left",
              sourceData: "1",
              isCustomField: false,
              accessor: "city",
              identifier: "city",
              originalIdentifier: "city",
              position: 1,
              accentColor:
                "{{((sourceData, formData, fieldState) => (appsmith.theme.colors.primaryColor))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
              borderRadius:
                "{{((sourceData, formData, fieldState) => (appsmith.theme.borderRadius.appBorderRadius))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
              boxShadow: "none",
            },
          },
          dataType: DataType.OBJECT,
          defaultValue:
            "{{((sourceData, formData, fieldState) => (sourceData.address))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
          fieldType: FieldType.OBJECT,
          sourceData: { Line1: "String field ", city: "1" },
          isCustomField: false,
          accessor: "address",
          identifier: "address",
          originalIdentifier: "address",
          position: 8,
        },
      },
      dataType: DataType.OBJECT,
      defaultValue:
        "{{((sourceData, formData, fieldState) => (sourceData))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
      fieldType: FieldType.OBJECT,
      sourceData: {
        name: "Test name",
        age: 20,
        dob: "10/12/2021",
        hobbies: ["travelling", "skating", "off-roading"],
        हिन्दि: "हिन्दि",
        education: [
          {
            college: "String field ",
            number: 1,
            graduationDate: "10/12/2021",
            boolean: true,
          },
        ],
        address: {
          Line1: "String field ",
          city: "1",
        },
      },
      isCustomField: false,
      accessor: ROOT_SCHEMA_KEY,
      identifier: ROOT_SCHEMA_KEY,
      originalIdentifier: ROOT_SCHEMA_KEY,
      position: -1,
    },
  },
};

const withRemovedAddedKeyToInitialDataset = {
  dataSource: {
    name: "Test name",
    age: 20,
    dob: "10/12/2021",
    gender: "male",
    hobbies: ["travelling", "skating", "off-roading"],
    हिन्दि: "हिन्दि",
    education: [
      {
        college: "String field ",
        number: 1,
        graduationDate: "10/12/2021",
        boolean: true,
      },
    ],
    address: {
      Line1: "String field ",
      city: "1",
    },
  },

  schemaOutput: {
    __root_schema__: {
      isDisabled: false,
      isRequired: false,
      labelTextSize: "0.875rem",
      label: "",
      isVisible: true,
      children: {
        name: {
          isDisabled: false,
          isRequired: false,
          labelTextSize: "0.875rem",
          label: "Name",
          isVisible: true,
          isSpellCheck: false,
          children: {},
          dataType: DataType.STRING,
          defaultValue:
            "{{((sourceData, formData, fieldState) => (sourceData.name))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
          fieldType: FieldType.TEXT_INPUT,
          iconAlign: "left",
          sourceData: "Test name",
          isCustomField: false,
          accessor: "name",
          identifier: "name",
          originalIdentifier: "name",
          position: 0,
          accentColor:
            "{{((sourceData, formData, fieldState) => (appsmith.theme.colors.primaryColor))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
          borderRadius:
            "{{((sourceData, formData, fieldState) => (appsmith.theme.borderRadius.appBorderRadius))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
          boxShadow: "none",
        },
        age: {
          isDisabled: false,
          isRequired: false,
          labelTextSize: "0.875rem",
          label: "Age",
          isVisible: true,
          isSpellCheck: false,
          children: {},
          dataType: DataType.NUMBER,
          defaultValue:
            "{{((sourceData, formData, fieldState) => (sourceData.age))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
          fieldType: FieldType.NUMBER_INPUT,
          iconAlign: "left",
          sourceData: 20,
          isCustomField: false,
          accessor: "age",
          identifier: "age",
          originalIdentifier: "age",
          position: 1,
          accentColor:
            "{{((sourceData, formData, fieldState) => (appsmith.theme.colors.primaryColor))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
          borderRadius:
            "{{((sourceData, formData, fieldState) => (appsmith.theme.borderRadius.appBorderRadius))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
          boxShadow: "none",
        },
        dob: {
          closeOnSelection: false,
          dateFormat: "MM/DD/YYYY",
          isDisabled: false,
          isRequired: false,
          labelTextSize: "0.875rem",
          label: "Dob",
          maxDate: "2121-12-31T18:29:00.000Z",
          minDate: "1920-12-31T18:30:00.000Z",
          shortcuts: false,
          isVisible: true,
          children: {},
          dataType: DataType.STRING,
          convertToISO: false,
          defaultValue:
            '{{((sourceData, formData, fieldState) => (moment(sourceData.dob, "MM/DD/YYYY").format("YYYY-MM-DDTHH:mm:ss.sssZ")))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}',
          fieldType: FieldType.DATEPICKER,
          timePrecision: "minute",
          sourceData: "10/12/2021",
          isCustomField: false,
          accessor: "dob",
          identifier: "dob",
          originalIdentifier: "dob",
          position: 2,
          accentColor:
            "{{((sourceData, formData, fieldState) => (appsmith.theme.colors.primaryColor))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
          borderRadius:
            "{{((sourceData, formData, fieldState) => (appsmith.theme.borderRadius.appBorderRadius))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
          boxShadow: "none",
        },
        hobbies: {
          isDisabled: false,
          isRequired: false,
          labelTextSize: "0.875rem",
          label: "Hobbies",
          isVisible: true,
          serverSideFiltering: false,
          options: [
            { label: "Blue", value: "BLUE" },
            { label: "Green", value: "GREEN" },
            { label: "Red", value: "RED" },
          ],
          children: {},
          dataType: DataType.ARRAY,
          defaultValue:
            "{{((sourceData, formData, fieldState) => (sourceData.hobbies))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
          fieldType: FieldType.MULTISELECT,
          isFilterable: false,
          sourceData: ["travelling", "skating", "off-roading"],
          isCustomField: false,
          accessor: "hobbies",
          identifier: "hobbies",
          originalIdentifier: "hobbies",
          position: 3,
          accentColor:
            "{{((sourceData, formData, fieldState) => (appsmith.theme.colors.primaryColor))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
          borderRadius:
            "{{((sourceData, formData, fieldState) => (appsmith.theme.borderRadius.appBorderRadius))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
          boxShadow: "none",
        },
        xn__j2bd4cyac6f: {
          isDisabled: false,
          isRequired: false,
          labelTextSize: "0.875rem",
          label: "हिन्दि",
          isVisible: true,
          isSpellCheck: false,
          children: {},
          dataType: DataType.STRING,
          defaultValue:
            '{{((sourceData, formData, fieldState) => (sourceData["हिन्दि"]))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}',
          fieldType: FieldType.TEXT_INPUT,
          iconAlign: "left",
          sourceData: "हिन्दि",
          isCustomField: false,
          accessor: "हिन्दि",
          identifier: "xn__j2bd4cyac6f",
          originalIdentifier: "हिन्दि",
          position: 4,
          accentColor:
            "{{((sourceData, formData, fieldState) => (appsmith.theme.colors.primaryColor))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
          borderRadius:
            "{{((sourceData, formData, fieldState) => (appsmith.theme.borderRadius.appBorderRadius))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
          boxShadow: "none",
        },
        education: {
          backgroundColor: "#FAFAFA",
          isCollapsible: true,
          isDisabled: false,
          isRequired: false,
          isVisible: true,
          labelTextSize: "0.875rem",
          label: "Education",
          children: {
            __array_item__: {
              isDisabled: false,
              isRequired: false,
              labelTextSize: "0.875rem",
              label: "Array Item",
              isVisible: true,
              children: {
                college: {
                  isDisabled: false,
                  isRequired: false,
                  labelTextSize: "0.875rem",
                  label: "College",
                  isVisible: true,
                  isSpellCheck: false,
                  children: {},
                  dataType: DataType.STRING,
                  defaultValue: undefined,
                  fieldType: FieldType.TEXT_INPUT,
                  iconAlign: "left",
                  sourceData: "String field ",
                  isCustomField: false,
                  accessor: "college",
                  identifier: "college",
                  originalIdentifier: "college",
                  position: 0,
                  accentColor:
                    "{{((sourceData, formData, fieldState) => (appsmith.theme.colors.primaryColor))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
                  borderRadius:
                    "{{((sourceData, formData, fieldState) => (appsmith.theme.borderRadius.appBorderRadius))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
                  boxShadow: "none",
                },
                number: {
                  isDisabled: false,
                  isRequired: false,
                  labelTextSize: "0.875rem",
                  label: "Number",
                  isVisible: true,
                  isSpellCheck: false,
                  children: {},
                  dataType: DataType.NUMBER,
                  defaultValue: undefined,
                  fieldType: FieldType.NUMBER_INPUT,
                  iconAlign: "left",
                  sourceData: 1,
                  isCustomField: false,
                  accessor: "number",
                  identifier: "number",
                  originalIdentifier: "number",
                  position: 1,
                  accentColor:
                    "{{((sourceData, formData, fieldState) => (appsmith.theme.colors.primaryColor))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
                  borderRadius:
                    "{{((sourceData, formData, fieldState) => (appsmith.theme.borderRadius.appBorderRadius))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
                  boxShadow: "none",
                },
                graduationDate: {
                  closeOnSelection: false,
                  dateFormat: "MM/DD/YYYY",
                  isDisabled: false,
                  isRequired: false,
                  labelTextSize: "0.875rem",
                  label: "Graduation Date",
                  maxDate: "2121-12-31T18:29:00.000Z",
                  minDate: "1920-12-31T18:30:00.000Z",
                  shortcuts: false,
                  isVisible: true,
                  children: {},
                  dataType: DataType.STRING,
                  defaultValue: undefined,
                  fieldType: FieldType.DATEPICKER,
                  timePrecision: "minute",
                  sourceData: "10/12/2021",
                  convertToISO: false,
                  isCustomField: false,
                  accessor: "graduationDate",
                  identifier: "graduationDate",
                  originalIdentifier: "graduationDate",
                  position: 2,
                  accentColor:
                    "{{((sourceData, formData, fieldState) => (appsmith.theme.colors.primaryColor))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
                  borderRadius:
                    "{{((sourceData, formData, fieldState) => (appsmith.theme.borderRadius.appBorderRadius))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
                  boxShadow: "none",
                },
                boolean: {
                  alignWidget: "LEFT",
                  isDisabled: false,
                  isRequired: false,
                  isVisible: true,
                  labelTextSize: "0.875rem",
                  label: "Boolean",
                  children: {},
                  dataType: DataType.BOOLEAN,
                  defaultValue: undefined,
                  fieldType: FieldType.SWITCH,
                  sourceData: true,
                  isCustomField: false,
                  accessor: "boolean",
                  identifier: "boolean",
                  originalIdentifier: "boolean",
                  position: 3,
                  backgroundColor:
                    "{{((sourceData, formData, fieldState) => (appsmith.theme.colors.primaryColor))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
                  boxShadow: "none",
                },
              },
              dataType: DataType.OBJECT,
              defaultValue: undefined,
              fieldType: FieldType.OBJECT,
              sourceData: {
                college: "String field ",
                number: 1,
                graduationDate: "10/12/2021",
                boolean: true,
              },
              isCustomField: false,
              accessor: ARRAY_ITEM_KEY,
              identifier: ARRAY_ITEM_KEY,
              originalIdentifier: ARRAY_ITEM_KEY,
              position: -1,
            },
          },
          dataType: DataType.ARRAY,
          defaultValue:
            "{{((sourceData, formData, fieldState) => (sourceData.education))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
          fieldType: FieldType.ARRAY,
          sourceData: [
            {
              boolean: true,
              college: "String field ",
              graduationDate: "10/12/2021",
              number: 1,
            },
          ],
          isCustomField: false,
          accessor: "education",
          identifier: "education",
          originalIdentifier: "education",
          position: 5,
        },
        address: {
          isDisabled: false,
          isRequired: false,
          labelTextSize: "0.875rem",
          label: "Address",
          isVisible: true,
          children: {
            Line1: {
              isDisabled: false,
              isRequired: false,
              labelTextSize: "0.875rem",
              label: "Line 1",
              isVisible: true,
              isSpellCheck: false,
              children: {},
              dataType: DataType.STRING,
              defaultValue:
                "{{((sourceData, formData, fieldState) => (sourceData.address.Line1))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
              fieldType: FieldType.TEXT_INPUT,
              iconAlign: "left",
              sourceData: "String field ",
              isCustomField: false,
              accessor: "Line1",
              identifier: "Line1",
              originalIdentifier: "Line1",
              position: 0,
              accentColor:
                "{{((sourceData, formData, fieldState) => (appsmith.theme.colors.primaryColor))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
              borderRadius:
                "{{((sourceData, formData, fieldState) => (appsmith.theme.borderRadius.appBorderRadius))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
              boxShadow: "none",
            },
            city: {
              isSpellCheck: false,
              isDisabled: false,
              isRequired: false,
              labelTextSize: "0.875rem",
              label: "City",
              isVisible: true,
              children: {},
              dataType: DataType.STRING,
              defaultValue:
                "{{((sourceData, formData, fieldState) => (sourceData.address.city))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
              fieldType: FieldType.TEXT_INPUT,
              iconAlign: "left",
              sourceData: "1",
              isCustomField: false,
              accessor: "city",
              identifier: "city",
              originalIdentifier: "city",
              position: 1,
              accentColor:
                "{{((sourceData, formData, fieldState) => (appsmith.theme.colors.primaryColor))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
              borderRadius:
                "{{((sourceData, formData, fieldState) => (appsmith.theme.borderRadius.appBorderRadius))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
              boxShadow: "none",
            },
          },
          dataType: DataType.OBJECT,
          defaultValue:
            "{{((sourceData, formData, fieldState) => (sourceData.address))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
          fieldType: FieldType.OBJECT,
          sourceData: { Line1: "String field ", city: "1" },
          isCustomField: false,
          accessor: "address",
          identifier: "address",
          originalIdentifier: "address",
          position: 6,
        },
        gender: {
          isDisabled: false,
          isRequired: false,
          labelTextSize: "0.875rem",
          label: "Gender",
          isVisible: true,
          isSpellCheck: false,
          children: {},
          dataType: DataType.STRING,
          defaultValue:
            "{{((sourceData, formData, fieldState) => (sourceData.gender))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
          fieldType: FieldType.TEXT_INPUT,
          iconAlign: "left",
          sourceData: "male",
          isCustomField: false,
          accessor: "gender",
          identifier: "gender",
          originalIdentifier: "gender",
          position: 7,
          accentColor:
            "{{((sourceData, formData, fieldState) => (appsmith.theme.colors.primaryColor))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
          borderRadius:
            "{{((sourceData, formData, fieldState) => (appsmith.theme.borderRadius.appBorderRadius))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
          boxShadow: "none",
        },
      },
      dataType: DataType.OBJECT,
      defaultValue:
        "{{((sourceData, formData, fieldState) => (sourceData))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
      fieldType: FieldType.OBJECT,
      sourceData: {
        name: "Test name",
        age: 20,
        dob: "10/12/2021",
        gender: "male",
        hobbies: ["travelling", "skating", "off-roading"],
        हिन्दि: "हिन्दि",
        education: [
          {
            college: "String field ",
            number: 1,
            graduationDate: "10/12/2021",
            boolean: true,
          },
        ],
        address: {
          Line1: "String field ",
          city: "1",
        },
      },
      isCustomField: false,
      accessor: ROOT_SCHEMA_KEY,
      identifier: ROOT_SCHEMA_KEY,
      originalIdentifier: ROOT_SCHEMA_KEY,
      position: -1,
    },
  },
};

const fieldThemeStylesheets = ({
  CHECKBOX: {
    backgroundColor: "{{appsmith.theme.colors.primaryColor}}",
    borderRadius: "{{appsmith.theme.borderRadius.appBorderRadius}}",
    boxShadow: "none",
  },
  CURRENCY_INPUT: {
    accentColor: "{{appsmith.theme.colors.primaryColor}}",
    borderRadius: "{{appsmith.theme.borderRadius.appBorderRadius}}",
    boxShadow: "none",
  },
  DATEPICKER: {
    accentColor: "{{appsmith.theme.colors.primaryColor}}",
    borderRadius: "{{appsmith.theme.borderRadius.appBorderRadius}}",
    boxShadow: "none",
  },
  EMAIL_INPUT: {
    accentColor: "{{appsmith.theme.colors.primaryColor}}",
    borderRadius: "{{appsmith.theme.borderRadius.appBorderRadius}}",
    boxShadow: "none",
  },
  MULTISELECT: {
    accentColor: "{{appsmith.theme.colors.primaryColor}}",
    borderRadius: "{{appsmith.theme.borderRadius.appBorderRadius}}",
    boxShadow: "none",
  },
  MULTILINE_TEXT_INPUT: {
    accentColor: "{{appsmith.theme.colors.primaryColor}}",
    borderRadius: "{{appsmith.theme.borderRadius.appBorderRadius}}",
    boxShadow: "none",
  },
  NUMBER_INPUT: {
    accentColor: "{{appsmith.theme.colors.primaryColor}}",
    borderRadius: "{{appsmith.theme.borderRadius.appBorderRadius}}",
    boxShadow: "none",
  },
  PASSWORD_INPUT: {
    accentColor: "{{appsmith.theme.colors.primaryColor}}",
    borderRadius: "{{appsmith.theme.borderRadius.appBorderRadius}}",
    boxShadow: "none",
  },
  PHONE_NUMBER_INPUT: {
    accentColor: "{{appsmith.theme.colors.primaryColor}}",
    borderRadius: "{{appsmith.theme.borderRadius.appBorderRadius}}",
    boxShadow: "none",
  },
  RADIO_GROUP: {
    backgroundColor: "{{appsmith.theme.colors.primaryColor}}",
    boxShadow: "none",
  },
  SELECT: {
    accentColor: "{{appsmith.theme.colors.primaryColor}}",
    borderRadius: "{{appsmith.theme.borderRadius.appBorderRadius}}",
    boxShadow: "none",
  },
  SWITCH: {
    backgroundColor: "{{appsmith.theme.colors.primaryColor}}",
    boxShadow: "none",
  },
  TEXT_INPUT: {
    accentColor: "{{appsmith.theme.colors.primaryColor}}",
    borderRadius: "{{appsmith.theme.borderRadius.appBorderRadius}}",
    boxShadow: "none",
  },
} as unknown) as FieldThemeStylesheet;

export default {
  initialDataset,
  withRemovedKeyFromInitialDataset,
  withRemovedAddedKeyToInitialDataset,
  fieldThemeStylesheets,
};
